package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.ClienteDTO;
import co.inventario.entidad.ZonaDTO;
import co.inventario.modelo.fachada.ClienteFachada;

@ManagedBean
public class ClienteBean {

	ClienteDTO clienteDTO;
	ArrayList<ClienteDTO> clienteDTOlista;
	private List<ClienteDTO> clienteFilter;

	public List<ClienteDTO> getClienteFilter() {
		return clienteFilter;
	}

	public void setClienteFilter(List<ClienteDTO> clienteFilter) {
		this.clienteFilter = clienteFilter;
	}

	public ClienteBean() {
		clienteDTO = new ClienteDTO();
		ZonaDTO zonaDTO = new ZonaDTO();
		clienteDTO.setZonaDTO(zonaDTO);
		refrescarTablaCliente();
	}

	public ClienteDTO getClienteDTO() {
		return clienteDTO;
	}

	public void setClienteDTO(ClienteDTO clienteDTO) {
		this.clienteDTO = clienteDTO;
	}

	public ArrayList<ClienteDTO> getClienteDTOlista() {
		return clienteDTOlista;
	}

	public void setClienteDTOlista(ArrayList<ClienteDTO> clienteDTOlista) {
		this.clienteDTOlista = clienteDTOlista;
	}

	public void refrescarTablaCliente() {
		try {
			ClienteFachada clienteFachada = new ClienteFachada();
			clienteDTOlista = clienteFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido refrescando la tabla cliente en el Bean: " + exception.getMessage());
		}
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (clienteDTO.getNvIdentificacionCliente() == null || "".equals(clienteDTO.getNvIdentificacionCliente().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo Identificacion no puede estar vacio."));
			}
			if (clienteDTO.getNvNombreEmpresaCliente() == null || "".equals(clienteDTO.getNvNombreEmpresaCliente().trim())) {
				context.addMessage(null, new FacesMessage("Error", "El campo cliente no puede estar vacio."));
			}
			if (clienteDTO.getNvPrimerNombreCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvSegundoNombreCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvPrimerApellidoCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvSegundoApellidoCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvTelefonoCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvExtensionCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvCelularCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvCorreoCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvDireccionCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			}
			if (clienteDTO.getNvPrimerApellidoCliente() == null) {
				context.addMessage(null, new FacesMessage("Error", "El campo  no puede estar vacio."));
			} else {
				ClienteFachada clienteFachada = new ClienteFachada();
				clienteFachada.crear(clienteDTO);
				refrescarTablaCliente();
				context.addMessage(null, new FacesMessage("Correcto", "El registro se ha creado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al crear el registro: " + exception.getMessage()));
		}
	}

	public void consultarTodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			if (clienteDTO.getInCodigoCliente() == 0) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo codigo no puede estar vacio."));
			} else {
				refrescarTablaCliente();
			}
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			ClienteFachada clienteFachada = new ClienteFachada();
			clienteFachada.actualizar(clienteDTO);
			refrescarTablaCliente();
			contexto.addMessage(null, new FacesMessage("succesfull", "el campo se ha Actualizado con exito : " + clienteDTO.getNvNombreEmpresaCliente()));
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
